//package com.pig4cloud.util;
//
//import cn.hutool.core.bean.BeanUtil;
//import cn.hutool.core.date.DatePattern;
//import cn.hutool.core.date.LocalDateTimeUtil;
//import cn.hutool.core.util.RandomUtil;
//import com.github.binarywang.wxpay.bean.request.WxPayRefundV3Request;
//import com.github.binarywang.wxpay.bean.request.WxPayUnifiedOrderV3Request;
//import com.pig4cloud.pig.admin.api.entity.AddressEntity;
//import com.pig4cloud.pig.admin.api.entity.OrderDetailEntity;
//import com.pig4cloud.pig.admin.api.entity.OrderEntity;
//import com.pig4cloud.pig.admin.api.entity.UserEntity;
//import com.pig4cloud.pig.admin.api.enums.GeneralStatusEnum;
//import com.pig4cloud.pig.admin.api.enums.OrderRefundStatusEnum;
//import com.pig4cloud.pig.admin.api.enums.OrderStatusEnum;
//import com.pig4cloud.pig.miniprogram.constant.ApiConstants;
//
//import java.math.BigDecimal;
//import java.time.LocalDateTime;
//
///**
// * @Description: 订单工具类
// * @CreateTime: 2024-01-03
// * @Author: Oliver
// * @Version: 1.0.0
// */
//public class OrderUtil {
//
//	/**
//	 * Description 构建订单编号
//	 *
//	 * @return java.lang.String
//	 * @Date 2023/3/24 9:37
//	 * @Author Oliver
//	 **/
//	public static String createOrderNumber(String orderTypeKey) {
//		LocalDateTime now = LocalDateTime.now();
//		String middle = LocalDateTimeUtil.format(now, DatePattern.PURE_DATETIME_MS_PATTERN);
//		String suffix = RandomUtil.randomNumbers(4);
//		return orderTypeKey + middle + suffix;
//	}
//
//	/**
//	 * Description 构建退款订单号
//	 *
//	 * @return java.lang.String
//	 * @Date 2023/8/1 18:36
//	 * @Author Oliver
//	 **/
//	public static String createRefundNumber() {
//		LocalDateTime now = LocalDateTime.now();
//		String middle = LocalDateTimeUtil.format(now, DatePattern.PURE_DATETIME_MS_PATTERN);
//		String suffix = RandomUtil.randomNumbers(7);
//		return "RF" + middle + suffix;
//	}
//
//	/**
//	 * Description  构建待支付订单
//	 *
//	 * @param user             :   支付用户
//	 * @param farmId           :   农场id
//	 * @param address          :   收货地址信息
//	 * @param machineId        :   设备id
//	 * @param orderType        :   订单类型
//	 * @param relationId       :   订单关联id
//	 * @param orderNumber      :   订单编号
//	 * @param distributionType :   配送类型
//	 * @return com.pig4cloud.pig.manage.entity.Order
//	 * @Date 2024/1/3 16:53
//	 * @Author Oliver
//	 **/
//	public static OrderEntity buildToBePaidOrder(UserEntity user,
//												 String orderNumber,
//												 Integer orderType,
//												 Long relationId,
//												 AddressEntity address,
//												 String machineId,
//												 Integer distributionType,
//												 Long farmId) {
//		OrderEntity result = new OrderEntity();
//		result.setOrderNumber(orderNumber);
//		result.setRelationId(relationId);
//		result.setStatus(OrderStatusEnum.UNPAID.getValue());
//		result.setOrderType(orderType);
//		result.setTenantId(user.getTenantId());
//		result.setUserId(user.getId());
//		result.setDistributionType(distributionType);
//		result.setMachineId(machineId);
//		result.setName(user.getNickName());
//		result.setMobile(user.getMobile());
//		if (BeanUtil.isNotEmpty(address)) {
//			result.setProvince(address.getProvince());
//			result.setCity(address.getCity());
//			result.setArea(address.getArea());
//			result.setAddress(address.getAddress());
//			result.setName(address.getName());
//			result.setMobile(address.getMobile());
//		}
//		result.setCancelTime(LocalDateTime.now().plusSeconds(ApiConstants.ORDER_TIME));
//		result.setFarmId(farmId);
//		return result;
//	}
//
//	/**
//	 * Description  构建订单详情
//	 *
//	 * @param user:         用户
//	 * @param orderId:      订单id
//	 * @param relationId:   关联id
//	 * @param relationType: 关联类型
//	 * @param img:          图片
//	 * @param price:        金额
//	 * @param number:       数量
//	 * @param name:         名称
//	 * @param introduction: 简介
//	 * @param freight:      运费
//	 * @return com.pig4cloud.pig.admin.api.entity.OrderDetailEntity
//	 * @Date 2024/2/23 17:12
//	 * @Author Oliver
//	 **/
//	public static OrderDetailEntity buildOrderDetail(String img,
//													 String name,
//													 Long number,
//													 Long orderId,
//													 Long relationId,
//													 BigDecimal price,
//													 UserEntity user,
//													 BigDecimal freight,
//													 String introduction,
//													 Integer relationType,
//													 Boolean isShow,
//													 Long specsId
//	) {
//		OrderDetailEntity result = new OrderDetailEntity();
//		result.setOrderId(orderId);
//		result.setRelationId(relationId);
//		result.setRelationType(relationType);
//		result.setImg(img);
//		result.setPrice(price);
//		result.setNumber(number);
//		result.setRefundStatus(OrderRefundStatusEnum.NOT_REFUND.getValue());
//		result.setName(name);
//		result.setIntroduction(introduction);
//		result.setTenantId(user.getTenantId());
//		result.setFreight(freight);
//		result.setSpecsId(specsId);
//		if (!isShow) {
//			result.setShowStatus(GeneralStatusEnum.NO.getValue());
//		}
//		return result;
//	}
//
//	/**
//	 * Description  构建微信支付订单
//	 *
//	 * @param body:       商品名称
//	 * @param outTradeNo: 订单编号
//	 * @param payPrice:   支付金额
//	 * @param openId:     用户openId
//	 * @param notifyUrl:  回调地址
//	 * @return bean.request.WxPayUnifiedOrderRequest 支付订单对象
//	 * @Date 2024/1/3 16:53
//	 * @Author Oliver
//	 **/
//	public static WxPayUnifiedOrderV3Request buildWxPayInfo(String body,
//															String outTradeNo,
//															BigDecimal payPrice,
//															String openId,
//															String notifyUrl) {
//		LocalDateTime startTime = LocalDateTime.now();
//		LocalDateTime endTime = startTime.plusMinutes(ApiConstants.ORDER_TIME);
//		WxPayUnifiedOrderV3Request request = new WxPayUnifiedOrderV3Request();
//		request.setOutTradeNo(outTradeNo);
//		request.setNotifyUrl(notifyUrl);
//		request.setDescription(body);
//		request.setTimeExpire(LocalDateTimeUtil.format(endTime, DatePattern.UTC_PATTERN));
//		WxPayUnifiedOrderV3Request.Payer payer = new WxPayUnifiedOrderV3Request.Payer();
//		payer.setOpenid(openId);
//		WxPayUnifiedOrderV3Request.Amount amount = new WxPayUnifiedOrderV3Request.Amount();
//		amount.setCurrency("CNY");
//		amount.setTotal(payPrice.multiply(BigDecimal.valueOf(100)).intValue());
//		request.setAmount(amount);
//		request.setPayer(payer);
//		return request;
//	}
//
//	/**
//	 * Description  构建微信退款订单信息
//	 *
//	 * @param refundPrice:   退款金额
//	 * @param outRefundNo:   退款单号
//	 * @param transactionId: 原微信支付号
//	 * @param notifyUrl:     退款回调地址
//	 * @return WxPayRefundV3Request
//	 * @Date 2023/8/1 18:55
//	 * @Author Oliver
//	 **/
//	public static WxPayRefundV3Request buildWxRefundInfo(BigDecimal refundPrice,
//														 String outRefundNo,
//														 String transactionId,
//														 String notifyUrl) {
//		WxPayRefundV3Request refundRequest = new WxPayRefundV3Request();
//		Integer price = refundPrice.multiply(BigDecimal.valueOf(100)).intValue();
//		refundRequest.setOutRefundNo(outRefundNo);
//		refundRequest.setTransactionId(transactionId);
//		refundRequest.setNotifyUrl(notifyUrl);
//		WxPayRefundV3Request.Amount amount = new WxPayRefundV3Request.Amount();
//		amount.setTotal(price);
//		amount.setRefund(price);
//		amount.setCurrency("CNY");
//		refundRequest.setAmount(amount);
//		return refundRequest;
//	}
//}
